﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraCharts;
using DevExpress.XtraEditors;
using Zero.POCO.Views;

namespace DevExpress.MailClient.Win.Controls.ProfilPenetration.Maximized
{
    public partial class WidgetCSPMaximized : DevExpress.XtraEditors.XtraUserControl
    {
        public WidgetCSPMaximized()
        {
            InitializeComponent();
        }

        public void UpdateStat(ProfilPenetrationView profilPenetrationView)
        {
            ccSupport.Series.Clear();
            var series1 = new Series(profilPenetrationView.ProfilPrincipale.ProfilPrincipale.SupportView.Nom, ViewType.Bar);

            series1.Points.Add(new SeriesPoint("Cadre", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Cadre * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadre));
            series1.Points.Add(new SeriesPoint("Autre inactif", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.AutreInactif * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreAutreInactif));
            series1.Points.Add(new SeriesPoint("Cadre Moyen", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.CadreMoyen * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadreMoyen));
            series1.Points.Add(new SeriesPoint("Chommeur", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Chomeur * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreChomeur));

            series1.Points.Add(new SeriesPoint("Employee", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Employee * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreEmployee));

            series1.Points.Add(new SeriesPoint("Femme au foyer", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.FemmeAuFoyer * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreFemmeAuFoyer));

            series1.Points.Add(new SeriesPoint("Haut Fonctionnaire", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.HautFonctionnaire * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreHautFonctionnaire));

            series1.Points.Add(new SeriesPoint("Pensionne", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Pensionne * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePensionne));
            series1.Points.Add(new SeriesPoint("Petit Patron", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.PetitPatron * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePetitPatron));

            series1.Points.Add(new SeriesPoint("Profession liberale", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.ProfessionLiberal * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreProfessionLiberal));
            series1.Points.Add(new SeriesPoint("Retraite", profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Retraite * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreRetraite));

           
           
            series1.SeriesPointsSorting = SortingMode.Descending;
            ccSupport.Series.Add(series1);


            foreach (var profilPenetrationSup in profilPenetrationView.ProfilPrincipale.ProfilSupport)
            {
                var series2 = new Series(profilPenetrationSup.SupportView.Nom, ViewType.Bar);

                series2.Points.Add(new SeriesPoint("Cadre", profilPenetrationSup.StatistiqueCSP.Cadre * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadre));
                series2.Points.Add(new SeriesPoint("Autre inactif", profilPenetrationSup.StatistiqueCSP.AutreInactif * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreAutreInactif));
                series2.Points.Add(new SeriesPoint("Cadre Moyen", profilPenetrationSup.StatistiqueCSP.CadreMoyen * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadreMoyen));
                series2.Points.Add(new SeriesPoint("Chommeur", profilPenetrationSup.StatistiqueCSP.Chomeur * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreChomeur));
                series2.Points.Add(new SeriesPoint("Employee", profilPenetrationSup.StatistiqueCSP.Employee * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreEmployee));
                series2.Points.Add(new SeriesPoint("Femme au foyer", profilPenetrationSup.StatistiqueCSP.FemmeAuFoyer * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreFemmeAuFoyer));
                series2.Points.Add(new SeriesPoint("Haut Fonctionnaire", profilPenetrationSup.StatistiqueCSP.HautFonctionnaire * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreHautFonctionnaire));
                series2.Points.Add(new SeriesPoint("Pensionne", profilPenetrationSup.StatistiqueCSP.Pensionne * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePensionne));
                series2.Points.Add(new SeriesPoint("Petit Patron", profilPenetrationSup.StatistiqueCSP.PetitPatron * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePetitPatron));
                series2.Points.Add(new SeriesPoint("Profession liberale", profilPenetrationSup.StatistiqueCSP.ProfessionLiberal * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreProfessionLiberal));
                series2.Points.Add(new SeriesPoint("Retraite", profilPenetrationSup.StatistiqueCSP.Retraite * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreRetraite));

                series2.SeriesPointsSorting = SortingMode.Descending;
                ccSupport.Series.Add(series2);    
            }

            // Format the the series labels.
            series1.Label.TextPattern = "{A}: {VP:p0}";

            List<int> listVague = profilPenetrationView.ProfilSupport.Select(e => e.Vague.Mois).ToList();
            listVague.Sort();



            ccVagueSupport.Series.Clear();
            var series_1 = new Series("Cadre", ViewType.Line);

          

            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_1.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.Cadre));
            }
            series_1.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Cadre * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadre * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadre));

            ccVagueSupport.Series.Add(series_1);






            var series_2 = new Series("AutreInactif", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_2.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.AutreInactif * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreAutreInactif));
            }
            series_2.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.AutreInactif * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreAutreInactif));

            ccVagueSupport.Series.Add(series_2);




            var series_3 = new Series("CadreMoyen", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_3.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.CadreMoyen));
            }
            series_3.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.CadreMoyen * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadreMoyen * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreCadreMoyen));

            ccVagueSupport.Series.Add(series_3);



            var series_4 = new Series("Chomeur", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_4.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.Chomeur * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreChomeur));
            }
            series_4.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Chomeur * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreChomeur));

            ccVagueSupport.Series.Add(series_4);



            var series_5 = new Series("Employee", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_5.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.Employee * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreEmployee));
            }
            series_5.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Employee * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreEmployee));

            ccVagueSupport.Series.Add(series_5);


            var series_6 = new Series("Femme Au Foyer", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_6.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.FemmeAuFoyer * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreFemmeAuFoyer));
            }
            series_6.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.FemmeAuFoyer * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreFemmeAuFoyer));

            ccVagueSupport.Series.Add(series_6);


            var series_7 = new Series("Haut fonctionnaire", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_7.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.HautFonctionnaire * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreHautFonctionnaire));
            }
            series_7.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.HautFonctionnaire * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreHautFonctionnaire));

            ccVagueSupport.Series.Add(series_7);




            var series_8 = new Series("Pensionne", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_8.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.Pensionne * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePensionne));
            }
            series_8.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Pensionne * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePensionne));

            ccVagueSupport.Series.Add(series_8);




            var series_9 = new Series("Petit patron", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_9.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.PetitPatron * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombrePetitPatron));
            }
            series_9.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.PetitPatron * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreProfessionLiberal));

            ccVagueSupport.Series.Add(series_9);




            var series_10 = new Series("Profession liberal", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_10.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.ProfessionLiberal * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreProfessionLiberal));
            }
            series_10.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.ProfessionLiberal * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreProfessionLiberal));

            ccVagueSupport.Series.Add(series_10);




            var series_11 = new Series("Retraite", ViewType.Line);



            for (int i = 0; i < listVague.Count; i++)
            {
                var profilPenetrationSup = profilPenetrationView.ProfilSupport.First(e => e.Vague.Mois == listVague[i]);
                series_11.Points.Add(new SeriesPoint(profilPenetrationSup.Vague.Libelle, profilPenetrationSup.ProfilPrincipale.StatistiqueCSP.Retraite * 100 / profilPenetrationView.ProfilPrincipale.Vague.NombreRetraite));
            }
            series_11.Points.Add(new SeriesPoint(profilPenetrationView.ProfilPrincipale.Vague.Libelle, profilPenetrationView.ProfilPrincipale.ProfilPrincipale.StatistiqueCSP.Retraite *100 / profilPenetrationView.ProfilPrincipale.Vague.NombreRetraite));

            ccVagueSupport.Series.Add(series_11);
        }
    }
}
